﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Configuration;
using System.Data;

namespace ReclutamientoCosea
{
	/// <summary>
	/// Interaction logic for usrFormatoOT.xaml
	/// </summary>
	public partial class usrFormatoOT : UserControl
	{
        public event CerroVentana SeCerroVentana;
        private static AppSettingsReader settings = new AppSettingsReader();
        private bool modo = false;

        public bool Modo
        {
            get { return modo; }
            set { modo = value; }
        }

		public usrFormatoOT()
		{
			this.InitializeComponent();
		}

        #region "Metodos"

        public void MuestraDatos(OrdenTrabajo ot)
        {
            try
            {
                txtOC.Text = ot.numero.ToString();
                lnFolio.Content = ot.nfolio;
                lblFecha.Content = ot.fecha.ToShortDateString();
                ot.nombreEmpresa = ObtieneEmpresa(ot.idempresa).razon_social;
                cboEmpresa.Text = ot.nombreEmpresa;                
                txtNombrePuesto.Text = ot.nombrepuesto;
                UDVacantes.Value = ot.numerovacantes;
                UDEdad.Value = ot.edad;
                UDEdad2.Value = ot.edad2;
                
                cboTitulo.Text = ot.titulo;
                cboEstadoCivil.Text = ot.estado_civil;
                cboEscolaridad.Text = ot.escolaridad;

                if (ot.sexo == "M")
                    rdoMasculino.IsEnabled = true;
                else
                    rdoFemenino.IsEnabled = true;
                if (ot.idiomaextranjero == 1)
                    rdoIdiomaSi.IsChecked = true;
                else
                    rdoIdiomaNo.IsChecked = true ;
                txtIdiomaComentario.Text = ot.comentidioma;
                if (ot.automovil == 1)
                    rdoAutomovilSi.IsChecked = true;
                else
                    rdoAutomovilNo.IsChecked = true;


                //txtAutomovilComentario.Text = ot.comentautomovil;
                txtEstatura.Text = ot.estatura.ToString();
                //txtTalla.Text = ot.talla.ToString();
                cboComplexion.Text = ot.complexion.Trim();
                txtOtro.Text = ot.otro;
                if (ot.experiencia == 1)
                    rdoExperienciaSi.IsChecked = true;
                else
                    rdoExperienciaNo.IsChecked = true;
                txtTiempo.Text = ot.tiempo.ToString();
                

                FlowDocument mcFlowDoc = new FlowDocument();
                Paragraph para = new Paragraph();
                para.Inlines.Add(new Run(ot.conocimientos));
                mcFlowDoc.Blocks.Add(para);
                txtConocimientos.Document = mcFlowDoc;

                mcFlowDoc = new FlowDocument();
                para = new Paragraph();
                para.Inlines.Add(new Run(ot.tiempoComentarios));
                txtTiempoComentario.Document = mcFlowDoc;


                mcFlowDoc = new FlowDocument();
                para = new Paragraph();
                para.Inlines.Add(new Run(ot.habilidades));
                txtHabilidades.Document = mcFlowDoc;

                mcFlowDoc = new FlowDocument();
                para = new Paragraph();
                para.Inlines.Add(new Run(ot.actividades));
                txtActividades.Document = mcFlowDoc;

                mcFlowDoc = new FlowDocument();
                para = new Paragraph();
                para.Inlines.Add(new Run(ot.software));
                txtSoftwareManejar.Document = mcFlowDoc;

                if (ot.personalasucargo == 1)
                    rdoPersonalSi.IsChecked = true;
                else
                    rdoPersonalNo.IsChecked = true;                    

                txtSueldo.Text = ot.sueldo.ToString();

                txtHorarioTrabajo.Text = ot.horariotrabajo;
                txtComisiones.Text = ot.comisiones.ToString();
                txtPrestaciones.Text = ot.prestaciones;
                txtVales.Text = ot.vales.ToString();

                if (ot.asignaauto == 1)
                    rdoAsignaAutoSi.IsChecked = true;
                else
                    rdoAsignaAutoNo.IsChecked = true;

                txtGasolina.Text = ot.gasolina.ToString();
                txtOtros.Text = ot.otros.ToString();
                txtTipoContrato.Text = ot.tipocontrato;

                mcFlowDoc = new FlowDocument();
                para = new Paragraph();
                para.Inlines.Add(new Run(ot.notas1));
                TxtNotas.Document = mcFlowDoc;

                txtLugarTrabajo.Text = ot.lugartrabajo;
                txtColonia.Text = ot.coloniatrabajo;
                txtEntreCalles.Text = ot.entrecalles;

                mcFlowDoc = new FlowDocument();
                para = new Paragraph();
                para.Inlines.Add(new Run(ot.comentarios));
                txtComentarios.Document = mcFlowDoc;

                txtGarantia.Text = ot.tiempogarantia.ToString();
                txtCondiciones.Text = ot.condicionescomerciales;

                mcFlowDoc = new FlowDocument();
                para = new Paragraph();
                para.Inlines.Add(new Run(ot.comentarios2));
                txtComentariosGeneral.Document = mcFlowDoc;               
                
                    
            }
            catch (Exception ex)
            {
                wExcepcionesSistema wError = new wExcepcionesSistema();
                wError.txtExcepcion.Text = ex.Message;
                wError.ShowDialog();
            }
        }

        private void validaCajasTexto()
        {
            if (txtNombrePuesto.Text.Trim() == string.Empty)
            {
                MessageBox.Show("Falta puesto de trabajo");
                txtNombrePuesto.Focus();
                return;
            }
            if (txtIdiomaComentario.Text.Trim() == string.Empty)
            {
                MessageBox.Show("Falta comentario idioma");
                txtIdiomaComentario.Focus();
                return;
            }

            if (txtEstatura.Text.Trim() == string.Empty)
            {
                MessageBox.Show("Falta estatura");
                txtEstatura.Focus();
                return;
            }

            if (cboComplexion.Text.Trim() == string.Empty)
            {
                MessageBox.Show("Falta complexión");
                cboComplexion.Focus();
                return;


            }

            if (txtOtro.Text.Trim() == string.Empty)
            {
                MessageBox.Show("Falta otro");
                txtOtro.Focus();
                return;
            }

            if (txtTiempo.Text.Trim() == string.Empty)
            {
                MessageBox.Show("Falta tiempo");
                txtTiempo.Focus();
                return;
            }
            if (Utilerias.ConvertRichTextBoxContentsToString(txtTiempoComentario).Trim() == string.Empty)
            {
                MessageBox.Show("Falta tiempo comentarios");
                txtTiempoComentario.Focus();
                return;
            }

            if (Utilerias.ConvertRichTextBoxContentsToString(txtConocimientos).Trim() == string.Empty)
            {
                MessageBox.Show("falta conocimientos");
                txtConocimientos.Focus();
                return;
            }

            if (Utilerias.ConvertRichTextBoxContentsToString(txtHabilidades).Trim() == string.Empty)
            {
                MessageBox.Show("Falta Habilidades");
                txtHabilidades.Focus();
                return;
            }

            if (Utilerias.ConvertRichTextBoxContentsToString(txtActividades).Trim() == string.Empty)
            {
                MessageBox.Show("Falta actividades");
                txtActividades.Focus();
                return;
            }

            if (Utilerias.ConvertRichTextBoxContentsToString(txtSoftwareManejar).Trim() == string.Empty)
            {
                MessageBox.Show("Falta Software a manejar");
                txtSoftwareManejar.Focus();
                return;
            }

            if (txtSueldo.Text.Trim() == string.Empty)
            {
                MessageBox.Show("Falta sueldo");
                txtSueldo.Focus();
                return;
            }

            if (txtHorarioTrabajo.Text.Trim() == string.Empty)
            {
                MessageBox.Show("Falta Horario de trabajo");
                txtHorarioTrabajo.Focus();
                return;
            }
            if (txtComisiones.Text.Trim()== string.Empty)
            {
                MessageBox.Show("Falta Comisiones");
                txtComisiones.Focus();
                return;

            }

            if (txtPrestaciones.Text.Trim() == string.Empty)
            {
                MessageBox.Show("Falta prestaciones");
                txtPrestaciones.Focus();
                return;
            }

            if (txtGasolina.Text.Trim() == string.Empty)
            {
                MessageBox.Show("Falta Gasolina");
                txtGasolina.Focus();
                return;
            }

            if (txtOtro.Text.Trim() == string.Empty)
            {
                MessageBox.Show("Falta Otro");
                txtOtro.Focus();
                return;
            }
            if (txtVales.Text.Trim() == string.Empty)
            {
                MessageBox.Show("Falta Vales");
                txtVales.Focus();
                return;
            }
            if (txtTipoContrato.Text.Trim() == string.Empty)
            {
                MessageBox.Show("Falta Tipo contrato");
                txtTipoContrato.Focus();
                return;
            }

            if (Utilerias.ConvertRichTextBoxContentsToString(TxtNotas).Trim() == string.Empty)
            {
                MessageBox.Show("Falta notas");
                TxtNotas.Focus();
                return;
            }
            if (txtLugarTrabajo.Text.Trim() == string.Empty)
            {
                MessageBox.Show("Falta lugar de trabajo");
                txtLugarTrabajo.Focus();
                return;
            }

            if (txtColonia.Text.Trim() == string.Empty)
            {
                MessageBox.Show("Falta colonia");
                txtColonia.Focus();
                return;
            }
            if (txtEntreCalles.Text.Trim() == string.Empty)
            {
                MessageBox.Show("Falta entre calles");
                txtEntreCalles.Focus();
                return;
            }
            if (Utilerias.ConvertRichTextBoxContentsToString(txtComentarios).Trim() == string.Empty)
            {
                MessageBox.Show("Falta comentarios");
                txtComentarios.Focus();
                return;
            }


            
        }

        public OrdenTrabajo RecuperaDatos()
        {
            OrdenTrabajo ot = new OrdenTrabajo();

            try
            {
                int valor;
                if (int.TryParse(txtOC.Text.Trim(), out valor))
                    ot.numero = valor;
                                
                //ot.fecha = (DateTime)dtFecha.Value;
                ot.fecha = DateTime.Now;
                ot.nombreEmpresa = cboEmpresa.Text.Trim();
                ot.idempresa = cboEmpresa.Value.ToString ();
                
                

                ot.nombrepuesto = txtNombrePuesto.Text.Trim();
                if(int.TryParse (UDVacantes.Value .ToString (), out valor ))
                    ot.numerovacantes = valor ;
                if (int.TryParse(UDEdad.Value.ToString(), out valor))
                    ot.edad = valor;
                if (int.TryParse(UDEdad2.Value.ToString(), out valor))
                    ot.edad2 = valor;                
                
                ot.titulo = cboTitulo.Text.Trim();
                ot.estado_civil = cboEstadoCivil.Text;
                ot.escolaridad = cboEscolaridad.Text;


                if (rdoMasculino.IsEnabled == true)
                    ot.sexo = "M";
                if(rdoFemenino.IsEnabled == true )
                    ot.sexo = "F";
                if (rdoIndeferente.IsEnabled == true)
                    ot.sexo = "I";

                if (rdoIdiomaSi.IsChecked == true)
                    ot.idiomaextranjero = 1;
                else
                    ot.idiomaextranjero = 0;

                txtIdiomaComentario.Text = ot.comentidioma;

                if (rdoAutomovilSi.IsChecked == true)
                    ot.automovil = 1;
                else
                    ot.automovil = 0;

                
                if (rdoAsignaAutoSi.IsChecked == true)
                    ot.asignaauto = 1;
                else
                    ot.asignaauto = 0;

                //ot.comentautomovil = txtAutomovilComentario.Text.Trim();
                double dValor;
                if (double.TryParse(txtEstatura.Text, out dValor))
                    ot.estatura = dValor;
                //if (int.TryParse(txtTalla.Text, out valor))
                //    ot.talla = valor;                
                ot.complexion = cboComplexion.Text;
                ot.otro = txtOtro.Text;
                if (rdoExperienciaSi.IsChecked == true)
                    ot.experiencia = 1;
                else
                    ot.experiencia = 0;

                
                if (int.TryParse(txtTiempo.Text, out  valor))
                    ot.tiempo = valor;

                ot.tiempoComentarios = Utilerias.ConvertRichTextBoxContentsToString(txtTiempoComentario);
                ot.conocimientos = Utilerias.ConvertRichTextBoxContentsToString(txtConocimientos);
                ot.habilidades = Utilerias.ConvertRichTextBoxContentsToString(txtHabilidades);
                ot.actividades = Utilerias.ConvertRichTextBoxContentsToString(txtActividades);
                ot.software = Utilerias.ConvertRichTextBoxContentsToString(txtSoftwareManejar);

                if (rdoPersonalSi.IsChecked == true)
                    ot.personalasucargo = 1;
                else
                    ot.personalasucargo = 0;
                if (double.TryParse(txtSueldo.Text, out dValor))
                    ot.sueldo = dValor;

                ot.horariotrabajo = txtHorarioTrabajo.Text.Trim();
                if (double.TryParse(txtComisiones.Text, out dValor))
                    ot.comisiones = dValor;

                ot.prestaciones = txtPrestaciones.Text;

                if (double.TryParse(txtVales.Text, out dValor))
                    ot.vales = dValor;

                if (rdoAsignaAutoSi.IsChecked == true)
                    ot.asignaauto = 1;
                else
                    ot.asignaauto = 0;

                if (double.TryParse(txtGasolina.Text, out dValor))
                    ot.gasolina = dValor;

                if (double.TryParse(txtOtro.Text, out dValor))
                    ot.otros = dValor;

                ot.tipocontrato = txtTipoContrato.Text;
                ot.notas1 = Utilerias.ConvertRichTextBoxContentsToString(TxtNotas);

                ot.lugartrabajo = txtLugarTrabajo.Text.Trim ();
                ot.coloniatrabajo = txtColonia.Text.Trim ();
                ot.entrecalles = txtEntreCalles.Text.Trim();

                ot.comentarios = Utilerias.ConvertRichTextBoxContentsToString(txtComentarios);

                if (int.TryParse(txtGarantia.Text, out valor))
                    ot.tiempogarantia = valor;

                ot.condicionescomerciales = txtCondiciones.Text;
                ot.comentarios2 = Utilerias.ConvertRichTextBoxContentsToString(txtComentariosGeneral);

                ot.sucursal = int.Parse(cboSucursal.Value.ToString());
                ot.prefijo = cboPrefijo.Text.Trim();

                
            }
            catch (Exception ex)
            {
                wExcepcionesSistema wError = new wExcepcionesSistema();
                wError.txtExcepcion.Text = ex.Message;
                wError.ShowDialog();
            }

            return ot; 
        }

        public void LimpiaCajas()
        {
            try
            {
                modo = true;
                txtOC.Text = string.Empty;
                //dtFecha.Value = DateTime.Now;
                lblFecha.Content = DateTime.Now.ToShortDateString();
                cboEmpresa.Text = string.Empty;
                txtNombrePuesto.Text = string.Empty;
                UDVacantes.Value = 1;
                UDEdad.Value = 18;
                cboTitulo.Text = string.Empty;
                cboEstadoCivil.Text = string.Empty;
                cboEscolaridad.Text = string.Empty;

                rdoMasculino.IsChecked = false;
                rdoFemenino.IsChecked = false;
                //rdoMasculino.IsEnabled = true;                
                //rdoFemenino.IsEnabled = true ;
            

                rdoIdiomaSi.IsChecked = false;
                rdoIdiomaNo.IsChecked = false;

                txtIdiomaComentario.Text = string.Empty;

                rdoAsignaAutoSi.IsChecked = false;
                rdoAsignaAutoNo.IsChecked = false;

                //txtAutomovilComentario.Text = string.Empty;
                txtEstatura.Text = string.Empty;

                //txtTalla.Text = string.Empty;
                cboComplexion.Text = string.Empty;
                txtOtro.Text = string.Empty;

                rdoExperienciaSi.IsChecked = false ;                
                rdoExperienciaNo.IsChecked = false ;

                txtTiempo.Text = string.Empty;
                txtConocimientos.Document.Blocks.Clear();
                txtConocimientos.Document.Blocks.Clear();
                txtTiempoComentario.Document.Blocks.Clear();
                txtHabilidades.Document.Blocks.Clear();
                txtActividades.Document.Blocks.Clear();
                txtSoftwareManejar.Document.Blocks.Clear();            
                rdoPersonalSi.IsChecked = false ;            
                rdoPersonalNo.IsChecked = false;
                txtSueldo.Text = string.Empty;

                txtHorarioTrabajo.Text = string.Empty;
                txtComisiones.Text = string.Empty;
                txtPrestaciones.Text = string.Empty;
                txtVales.Text = string.Empty;

                rdoAsignaAutoSi.IsChecked = false ;                
                rdoAsignaAutoNo.IsChecked = false;

                txtGasolina.Text = string.Empty;
                txtOtros.Text = string.Empty;
                txtTipoContrato.Text = string.Empty;

                TxtNotas.Document.Blocks.Clear();

                txtLugarTrabajo.Text = string.Empty;
                txtColonia.Text = string.Empty;
                txtEntreCalles.Text = string.Empty;

                txtComentarios.Document.Blocks.Clear();

                txtGarantia.Text = string.Empty;
                txtCondiciones.Text = string.Empty;

                txtComentariosGeneral.Document.Blocks.Clear();
                lnFolio.Content = string.Empty;
            }
            catch (Exception ex)
            {
                wExcepcionesSistema wError = new wExcepcionesSistema();
                wError.txtExcepcion.Text = ex.Message;
                wError.ShowDialog();
            }
        }

        public void CargaCombos()
        {
            bdSQLServer bd = new bdSQLServer((string)settings.GetValue("cadenaconexion", typeof(string)));
            string strSQL = "";
            try
            {
                bd.bdConecta();
                strSQL = "select * from vwempresa order by razon_social asc; ";
                strSQL += "select * from titulo; ";
                strSQL += "select * from EstadoCivil; ";
                strSQL += "select * from Escolaridad; ";
                strSQL += "select * from tallas; ";
                strSQL += "select id_empresa,nombre_comercial from sucursal; ";
                strSQL += "select prefijo from prefijo ";

                DataSet ds = bd.dataSetConsulta(strSQL, "vwempresa");
                
             
               
                cboEmpresa.ItemsProvider.ItemsSource = ds.Tables[0].DefaultView;
                cboEmpresa.ItemsProvider.DisplayMemberPath = "razon_social";
                cboEmpresa.ItemsProvider.ValuePath = "idempresa";

                cboTitulo.ItemsProvider.ItemsSource = ds.Tables[1].DefaultView;
                cboTitulo.ItemsProvider.DisplayMemberPath = "titulo";
                cboTitulo.ItemsProvider.ValuePath = "idtitulo";

                cboEstadoCivil.ItemsProvider.ItemsSource = ds.Tables[2].DefaultView;
                cboEstadoCivil.ItemsProvider.DisplayMemberPath = "estadocivil";
                cboEstadoCivil.ItemsProvider.ValuePath = "idestadocivil";

                cboEscolaridad.ItemsProvider.ItemsSource = ds.Tables[3].DefaultView;
                cboEscolaridad.ItemsProvider.DisplayMemberPath = "escolaridad";
                cboEscolaridad.ItemsProvider.ValuePath = "idescolaridad";

                
                cboComplexion.ItemsProvider.ItemsSource = ds.Tables[4].DefaultView;
                cboComplexion.ItemsProvider.DisplayMemberPath = "Talla";
                cboComplexion.ItemsProvider.ValuePath = "idTalla";


                cboSucursal.ItemsProvider.ItemsSource = ds.Tables[5].DefaultView;
                cboSucursal.ItemsProvider.DisplayMemberPath = "nombre_comercial";
                cboSucursal.ItemsProvider.ValuePath = "id_empresa";


                cboPrefijo.ItemsProvider.ItemsSource = ds.Tables[6].DefaultView;
                cboPrefijo.ItemsProvider.DisplayMemberPath = "prefijo";
                cboPrefijo.ItemsProvider.ValuePath = "prefijo";

                //cboComple.ItemsProvider.ItemsSource = ds.Tables[4].DefaultView;
                //cboComple.ItemsProvider.DisplayMemberPath = "talla";
                //cboComple.ItemsProvider.ValuePath = "idTalla";

            }
            catch (Exception ex)
            {
                wExcepcionesSistema wError = new wExcepcionesSistema();
                wError.txtExcepcion.Text = ex.Message;
                wError.ShowDialog();
            }
            finally
            {
                bd.bdCierra();
            }
        }

        private void btnNuevo_Click(object sender, System.Windows.RoutedEventArgs e)
        {
            LimpiaCajas();
            CargaCombos();
        }

        private void btnGuardar_Click(object sender, System.Windows.RoutedEventArgs e)
        {
            validaCajasTexto();

            try
            {
                if (modo == true)
                {
                    if (cboPrefijo.Text.Trim().Length == 0 || cboSucursal.Text.Trim().Length == 0)
                    {
                        MessageBox.Show("Se tiene que escoger la sucursal o el prefijo antes de guardar la Orden de Trabajo",
                            "Reclutamiento Cosea", MessageBoxButton.OK, MessageBoxImage.Error);
                        return;
                    }
                    txtOC.Text = AdmOT.GuardaOT(RecuperaDatos()).ToString();
                }
                else
                    AdmOT.ActualizaOT(RecuperaDatos());
                modo = false;
                MessageBox.Show("¡ Orden Guardada !", "Reclutamiento Cosea", MessageBoxButton.OK, MessageBoxImage.Information);
            }
            catch (Exception ex)
            {
                wExcepcionesSistema wError = new wExcepcionesSistema();
                wError.txtExcepcion.Text = ex.Message;
                wError.ShowDialog();
            }
        }

        private void btnSalir_Click(object sender, System.Windows.RoutedEventArgs e)
        {
            SeCerroVentana(true);
        }


        

        private void btnMasInfo1_Click(object sender, RoutedEventArgs e)
        {

            try
            {
                Empresa emp = new Empresa();
                emp = ObtieneEmpresa(cboEmpresa.Value.ToString());
                emp.razon_social= cboEmpresa.Text.Trim();
                emp.idempresa = cboEmpresa.Value.ToString();

                wDatosFamilares wDatosEmpresa = new wDatosFamilares(5, emp);
                wDatosEmpresa.Title = "Empresa";
                wDatosEmpresa.Renglon = 1;
                wDatosEmpresa.Show();
                wDatosEmpresa.CerrarVentana += (obj1, obj2) =>
                {
                    if (obj2)
                    {
                        //Aqui pudiera ir rutina para guardar el camio
                    }
                };

            }
            catch (Exception ex)
            {
                wExcepcionesSistema wError = new wExcepcionesSistema();
                wError.txtExcepcion.Text = ex.Message;
                wError.ShowDialog();
            }
        }

        private Empresa ObtieneEmpresa(string idempresa)
        {
            Empresa emp = new Empresa();

            bdSQLServer bd = new bdSQLServer((string)settings.GetValue("cadenaconexion", typeof(string)));
            string strSQL = "";
            try
            {             

                bd.bdConecta();
                strSQL = "select * from Empresa where idempresa = '{0}'";
                strSQL = String.Format(strSQL, idempresa);
                DataSet ds = bd.dataSetConsulta(strSQL, "empresa");
                DataRow dr = ds.Tables[0].Rows[0];

                emp.razon_social = dr["razon_social"].ToString();
                emp.giro = dr["giro"].ToString();
                emp.rfc = dr["rfc"].ToString();
                emp.domicilio = dr["domicilio"].ToString();
                emp.colonia = dr["colonia"].ToString();
                emp.telefono1 = dr["telefono1"].ToString();
                emp.telefono2 = "";
                emp.municipio = "";
                emp.estado = "";
                emp.contacto = dr["contacto"].ToString();
                emp.mail = dr["mail"].ToString();
                emp.idintranet = dr["idintranet"].ToString();
                emp.comentarios = dr["comentarios"].ToString();


            }
            catch (Exception ex)
            {
                wExcepcionesSistema wError = new wExcepcionesSistema();
                wError.txtExcepcion.Text = ex.Message;
                wError.ShowDialog();
            }
            finally
            {
                bd.bdCierra();
            }

            return emp;
        }

        private void btnEmpresa_Click(object sender, RoutedEventArgs e)
        {
            wImportaEmpresa wimporta = new wImportaEmpresa();
            wimporta.SeCerroVentana += (obj1) =>
            {
                if ((bool)obj1 == true)
                    CargaCombos();
            };
            wimporta.Show();
        }



        #endregion


    }        
}